One of the most important technical advances in modern computer technology has been the development of object-oriented technology, a form of software engineering based on objects (see e.g. "Object-Oriented Technology: A Manager's Guide", D. Taylor, 1990, Addison Wesley). An object can be defined as a "software package that contains a mixture of procedures and data". An important property of objects is that they are hierarchical. Thus, for example, an object representing a graph might contain sub-objects representing the axes, data, title and so on. An object-oriented system defines object classes, which are templates, with instances of that object class effectively being completed copies of the template. Thus, for example, an object class might represent a form of bar chart, whilst an instance of this class would be an actual bar chart with real data associated with it. Both object classes and instances can be regarded as objects.
Object-oriented systems were first developed in relation to simulation problems, but have now spread into all computing fields, from real-time control systems through computer operating systems to applications software. Object-oriented environments are widely seen as offering a wide range of potential benefits, including enhanced reliability and software re-use.
Another major advance in improving the effectiveness of computer systems has been the adoption of graphical user interfaces (GUI), whereby the user interacts with the computer using a mouse-positioned cursor. Thus, for example, the user can select a particular file within a given directory by first clicking on the icon representing that directory to reveal a series of icons each representing a file within the directory. The desired file can then be selected by clicking on the appropriate icon. GUIs are now provided by many standard operating systems for controlling the computer--for example, for starting programs clicking on an icon, for printing documents and so on. They are further used by applications (usually via the operating system) to allow easier control of the application. Details about a typical GUI can be found in the IBM Common User Access (CUA1) publications: CUA Guide to User Interface Design (SC-34-4289), and CUA Advanced Interface Design Reference (SC-34-4290).
Although object systems have been developed with some form of graphical user interface, such systems are usually controlled via a menu or command-line interface. Often such an interface does not properly reflect the nature of the data or system. For example, the same menu might be presented in a variety of situations, even when some of the listed choices are inapplicable: a graph might still have options relating to say the Y-axis, even though the user has decided to depict the data as a pie chart. Typically extraneous options such as these are greyed out, but nevertheless they can prove distracting and misleading for the user.